package _11_整理题目._2_二叉树_递归_dfs_bfs._遍历;

import org.junit.Test;
import util.TreeNode;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;


/**
 *
 *
 * 给定一棵二叉树，其中已经没有重复值的节点，请判断该二叉树是否为完全二叉树。
 *
 * 层次遍历 直至遇到第一个 null节点，结束循环
 * （ 注意offer下一个左右子节点时不判断 ==null ）
 * 确认 queue 中剩余的是否都是 null
 *      
 */
public class _030_判断是否是完全二叉树 {

    public boolean judgeIt (TreeNode root) {
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);

        while (!queue.isEmpty()) {
            TreeNode node = queue.poll();
            if (node == null) break;

            queue.add(node.left);
            queue.add(node.right);
        }

        while (!queue.isEmpty()) {
            TreeNode node = queue.poll();
            if (node != null) break;
        }
        return queue.isEmpty();
    }
    
    @Test
    public void main() {
        Integer[] input = {1, 2, 3};
        TreeNode root = TreeNode.getTreeFromArray(input);
        System.out.println(judgeIt(root));
    }
    
}
